package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Spring Boot 应用主启动类
 *
 * @SpringBootApplication 是一个组合注解，包含以下三个注解：
 * 1. @SpringBootConfiguration - 标识这是一个 Spring Boot 配置类
 * 2. @EnableAutoConfiguration - 启用 Spring Boot 自动配置
 * 3. @ComponentScan - 自动扫描当前包及子包下的所有组件
 *
 * 功能说明：
 * - 扫描 com.example.demo 包及其子包下的所有 @Component、@Service、@Repository、@Controller 等注解
 * - 自动配置数据源、JPA、Web MVC 等组件
 * - 启动内嵌的 Tomcat 服务器
 */
@SpringBootApplication
public class DemoApplication {

    /**
     * 应用程序入口方法
     *
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        // 启动 Spring Boot 应用
        SpringApplication.run(DemoApplication.class, args);

        // 输出启动成功提示
        System.out.println("\n========================================");
        System.out.println("  Spring Boot 应用启动成功！");
        System.out.println("  访问地址: http://localhost:8080");
        System.out.println("  H2 控制台: http://localhost:8080/h2-console");
        System.out.println("  API 文档:");
        System.out.println("    - 获取所有用户: GET http://localhost:8080/api/users");
        System.out.println("    - 获取单个用户: GET http://localhost:8080/api/users/{id}");
        System.out.println("    - 创建用户: POST http://localhost:8080/api/users");
        System.out.println("    - 更新用户: PUT http://localhost:8080/api/users/{id}");
        System.out.println("    - 删除用户: DELETE http://localhost:8080/api/users/{id}");
        System.out.println("    - 搜索用户: GET http://localhost:8080/api/users/search?name=xxx");
        System.out.println("========================================\n");
    }
}
